home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 May / PCWMAY06.iso / Software / Freeware / First Page 2006 3.00 / fp2006-final-3.00-setup.exe / {app} / Iscripts / Forms Misc / val-date.izs < prev    next >
Text File  |  2005-09-28  |  9KB  |  409 lines

  1. <!NOWIZARD>
  2.  
  3. <!TITLE>Validation (Date) 
  4. <!/TITLE>
  5.  
  6. <!DESCRIPTION> Dates are validated and formatted in your form. Supports over a dozen different date formats, and formats the date properly in United States or European date formatting styles depending on how the script is configured. A dateCheck function also is included if you wish to compare two dates.<!/DESCRIPTION> 
  7.  
  8. <!CATEGORY>Forms<!/CATEGORY>
  9.  
  10. <!SCRIPT>
  11. <!-- START OF SCRIPT -->
  12.  
  13.  
  14. <!-- HOW TO INSTALL VALIDATION (DATE):
  15.  
  16.   1.  Copy code into the HEAD section of document
  17.   2.  Put last coding into the BODY section of document  -->
  18.  
  19. <!-- STEP ONE: Add code into HEAD section of document  -->
  20.  
  21. <HEAD>
  22.  
  23. <SCRIPT LANGUAGE="JavaScript">
  24. <!-- Original:  Mike Welagen (welagenm@hotmail.com) -->
  25.  
  26.  
  27.  
  28. <!-- Begin
  29. function checkdate(objName) {
  30. var datefield = objName;
  31. if (chkdate(objName) == false) {
  32. datefield.select();
  33. alert("That date is invalid.  Please try again.");
  34. datefield.focus();
  35. return false;
  36. }
  37. else {
  38. return true;
  39.    }
  40. }
  41. function chkdate(objName) {
  42. var strDatestyle = "US"; //United States date style
  43. //var strDatestyle = "EU";  //European date style
  44. var strDate;
  45. var strDateArray;
  46. var strDay;
  47. var strMonth;
  48. var strYear;
  49. var intday;
  50. var intMonth;
  51. var intYear;
  52. var booFound = false;
  53. var datefield = objName;
  54. var strSeparatorArray = new Array("-"," ","/",".");
  55. var intElementNr;
  56. var err = 0;
  57. var strMonthArray = new Array(12);
  58. strMonthArray[0] = "Jan";
  59. strMonthArray[1] = "Feb";
  60. strMonthArray[2] = "Mar";
  61. strMonthArray[3] = "Apr";
  62. strMonthArray[4] = "May";
  63. strMonthArray[5] = "Jun";
  64. strMonthArray[6] = "Jul";
  65. strMonthArray[7] = "Aug";
  66. strMonthArray[8] = "Sep";
  67. strMonthArray[9] = "Oct";
  68. strMonthArray[10] = "Nov";
  69. strMonthArray[11] = "Dec";
  70. strDate = datefield.value;
  71. if (strDate.length < 1) {
  72. return true;
  73. }
  74. for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
  75. if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
  76. strDateArray = strDate.split(strSeparatorArray[intElementNr]);
  77. if (strDateArray.length != 3) {
  78. err = 1;
  79. return false;
  80. }
  81. else {
  82. strDay = strDateArray[0];
  83. strMonth = strDateArray[1];
  84. strYear = strDateArray[2];
  85. }
  86. booFound = true;
  87.    }
  88. }
  89. if (booFound == false) {
  90. if (strDate.length>5) {
  91. strDay = strDate.substr(0, 2);
  92. strMonth = strDate.substr(2, 2);
  93. strYear = strDate.substr(4);
  94.    }
  95. }
  96. if (strYear.length == 2) {
  97. strYear = '20' + strYear;
  98. }
  99. // US style
  100. if (strDatestyle == "US") {
  101. strTemp = strDay;
  102. strDay = strMonth;
  103. strMonth = strTemp;
  104. }
  105. intday = parseInt(strDay, 10);
  106. if (isNaN(intday)) {
  107. err = 2;
  108. return false;
  109. }
  110. intMonth = parseInt(strMonth, 10);
  111. if (isNaN(intMonth)) {
  112. for (i = 0;i<12;i++) {
  113. if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
  114. intMonth = i+1;
  115. strMonth = strMonthArray[i];
  116. i = 12;
  117.    }
  118. }
  119. if (isNaN(intMonth)) {
  120. err = 3;
  121. return false;
  122.    }
  123. }
  124. intYear = parseInt(strYear, 10);
  125. if (isNaN(intYear)) {
  126. err = 4;
  127. return false;
  128. }
  129. if (intMonth>12 || intMonth<1) {
  130. err = 5;
  131. return false;
  132. }
  133. if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
  134. err = 6;
  135. return false;
  136. }
  137. if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
  138. err = 7;
  139. return false;
  140. }
  141. if (intMonth == 2) {
  142. if (intday < 1) {
  143. err = 8;
  144. return false;
  145. }
  146. if (LeapYear(intYear) == true) {
  147. if (intday > 29) {
  148. err = 9;
  149. return false;
  150. }
  151. }
  152. else {
  153. if (intday > 28) {
  154. err = 10;
  155. return false;
  156. }
  157. }
  158. }
  159. if (strDatestyle == "US") {
  160. datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
  161. }
  162. else {
  163. datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
  164. }
  165. return true;
  166. }
  167. function LeapYear(intYear) {
  168. if (intYear % 100 == 0) {
  169. if (intYear % 400 == 0) { return true; }
  170. }
  171. else {
  172. if ((intYear % 4) == 0) { return true; }
  173. }
  174. return false;
  175. }
  176. function doDateCheck(from, to) {
  177. if (Date.parse(from.value) <= Date.parse(to.value)) {
  178. alert("The dates are valid.");
  179. }
  180. else {
  181. if (from.value == "" || to.value == "") 
  182. alert("Both dates must be entered.");
  183. else 
  184. alert("To date must occur after the from date.");
  185.    }
  186. }
  187. //  End -->
  188. </script>
  189. </HEAD>
  190.  
  191. <!-- STEP TWO: Add code into BODY section of document  -->
  192.  
  193. <BODY>
  194.  
  195. <center>
  196. <form>
  197. <pre>
  198. From date <input type=text name=from onBlur="checkdate(this)" size=11 maxlength=11>
  199. To date   <input type=text name=to   onBlur="checkdate(this)" size=11 maxlength=11>
  200.  
  201. <input type=button name=formatbutton onClick="doDateCheck(this.form.from, this.form.to);" value="Check">
  202. </pre>
  203. </form>
  204. </center>
  205.  
  206. <!-- END OF SCRIPT -->
  207. <!/SCRIPT>
  208.  
  209. <!PREVIEW>
  210. <!-- START OF SCRIPT -->
  211.  
  212.  
  213. <!-- HOW TO INSTALL VALIDATION (DATE):
  214.  
  215.   1.  Copy code into the HEAD section of document
  216.   2.  Put last coding into the BODY section of document  -->
  217.  
  218. <!-- STEP ONE: Add code into HEAD section of document  -->
  219.  
  220. <HEAD>
  221.  
  222. <SCRIPT LANGUAGE="JavaScript">
  223. <!-- Original:  Mike Welagen (welagenm@hotmail.com) -->
  224.  
  225.  
  226.  
  227. <!-- Begin
  228. function checkdate(objName) {
  229. var datefield = objName;
  230. if (chkdate(objName) == false) {
  231. datefield.select();
  232. alert("That date is invalid.  Please try again.");
  233. datefield.focus();
  234. return false;
  235. }
  236. else {
  237. return true;
  238.    }
  239. }
  240. function chkdate(objName) {
  241. var strDatestyle = "US"; //United States date style
  242. //var strDatestyle = "EU";  //European date style
  243. var strDate;
  244. var strDateArray;
  245. var strDay;
  246. var strMonth;
  247. var strYear;
  248. var intday;
  249. var intMonth;
  250. var intYear;
  251. var booFound = false;
  252. var datefield = objName;
  253. var strSeparatorArray = new Array("-"," ","/",".");
  254. var intElementNr;
  255. var err = 0;
  256. var strMonthArray = new Array(12);
  257. strMonthArray[0] = "Jan";
  258. strMonthArray[1] = "Feb";
  259. strMonthArray[2] = "Mar";
  260. strMonthArray[3] = "Apr";
  261. strMonthArray[4] = "May";
  262. strMonthArray[5] = "Jun";
  263. strMonthArray[6] = "Jul";
  264. strMonthArray[7] = "Aug";
  265. strMonthArray[8] = "Sep";
  266. strMonthArray[9] = "Oct";
  267. strMonthArray[10] = "Nov";
  268. strMonthArray[11] = "Dec";
  269. strDate = datefield.value;
  270. if (strDate.length < 1) {
  271. return true;
  272. }
  273. for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
  274. if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
  275. strDateArray = strDate.split(strSeparatorArray[intElementNr]);
  276. if (strDateArray.length != 3) {
  277. err = 1;
  278. return false;
  279. }
  280. else {
  281. strDay = strDateArray[0];
  282. strMonth = strDateArray[1];
  283. strYear = strDateArray[2];
  284. }
  285. booFound = true;
  286.    }
  287. }
  288. if (booFound == false) {
  289. if (strDate.length>5) {
  290. strDay = strDate.substr(0, 2);
  291. strMonth = strDate.substr(2, 2);
  292. strYear = strDate.substr(4);
  293.    }
  294. }
  295. if (strYear.length == 2) {
  296. strYear = '20' + strYear;
  297. }
  298. // US style
  299. if (strDatestyle == "US") {
  300. strTemp = strDay;
  301. strDay = strMonth;
  302. strMonth = strTemp;
  303. }
  304. intday = parseInt(strDay, 10);
  305. if (isNaN(intday)) {
  306. err = 2;
  307. return false;
  308. }
  309. intMonth = parseInt(strMonth, 10);
  310. if (isNaN(intMonth)) {
  311. for (i = 0;i<12;i++) {
  312. if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
  313. intMonth = i+1;
  314. strMonth = strMonthArray[i];
  315. i = 12;
  316.    }
  317. }
  318. if (isNaN(intMonth)) {
  319. err = 3;
  320. return false;
  321.    }
  322. }
  323. intYear = parseInt(strYear, 10);
  324. if (isNaN(intYear)) {
  325. err = 4;
  326. return false;
  327. }
  328. if (intMonth>12 || intMonth<1) {
  329. err = 5;
  330. return false;
  331. }
  332. if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
  333. err = 6;
  334. return false;
  335. }
  336. if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
  337. err = 7;
  338. return false;
  339. }
  340. if (intMonth == 2) {
  341. if (intday < 1) {
  342. err = 8;
  343. return false;
  344. }
  345. if (LeapYear(intYear) == true) {
  346. if (intday > 29) {
  347. err = 9;
  348. return false;
  349. }
  350. }
  351. else {
  352. if (intday > 28) {
  353. err = 10;
  354. return false;
  355. }
  356. }
  357. }
  358. if (strDatestyle == "US") {
  359. datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
  360. }
  361. else {
  362. datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
  363. }
  364. return true;
  365. }
  366. function LeapYear(intYear) {
  367. if (intYear % 100 == 0) {
  368. if (intYear % 400 == 0) { return true; }
  369. }
  370. else {
  371. if ((intYear % 4) == 0) { return true; }
  372. }
  373. return false;
  374. }
  375. function doDateCheck(from, to) {
  376. if (Date.parse(from.value) <= Date.parse(to.value)) {
  377. alert("The dates are valid.");
  378. }
  379. else {
  380. if (from.value == "" || to.value == "") 
  381. alert("Both dates must be entered.");
  382. else 
  383. alert("To date must occur after the from date.");
  384.    }
  385. }
  386. //  End -->
  387. </script>
  388. </HEAD>
  389.  
  390. <!-- STEP TWO: Add code into BODY section of document  -->
  391.  
  392. <BODY>
  393.  
  394. <center>
  395. <form>
  396. <pre>
  397. From date <input type=text name=from onBlur="checkdate(this)" size=11 maxlength=11>
  398. To date   <input type=text name=to   onBlur="checkdate(this)" size=11 maxlength=11>
  399.  
  400. <input type=button name=formatbutton onClick="doDateCheck(this.form.from, this.form.to);" value="Check">
  401. </pre>
  402. </form>
  403. </center>
  404.  
  405. <!-- END OF SCRIPT -->
  406. <!/PREVIEW>
  407.  
  408. <!RELATED>NONE<!/RELATED>
  409.